package com.hongxin.nw.netty.model.packing.info;

import com.hongxin.nw.netty.utils.FieldPack;
import com.hongxin.nw.netty.values.TypeIdentif;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * @remark A.31 远程升级启动
 * @author: GuoXiaolin
 * @date 2019/5/25 16:16
 * @Version 1.0
 * @Descibe
 */
@Slf4j
public class Csdna1_15 implements IPacking {

    /**
     * 1	充电设备编号	压缩BCD码	8Byte	充电设备编号
     */
    private String co ;

    /**
     * 2	远程升级	BCD码	186 Byte
     * 格式:
     * VVAAAAAAAABBBBCCCCCCCCCCCCCCCCCCCC
     * DDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
     * FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     * GGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
     * KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK。
     *
     * 设置此参数为后台启动充电设备连接FTP服务器进行程序升级。
     * 充电设备在充电过程中不进行升级，返回失败；
     * 充电设备在待机状态时进行程序升级，在升级时不能进行充电操作。      String order ;//VV:命令是否有效(1字节HEX码)；AA 有效；其它无效；
     *
     * String fip;//AA...AA：FTP服务器IP(4字节HEX码);如：C0 02 03 04 表示IP为192.2.3.4；
     * String fport;//BBBB：端口号(1字节HEX码)；15 表示端口号21；
     * String fuser ;//CC...CC：FTP用户名(10字节HEX码，00表示字符串结束)；
     * String fpass ;//DD...DD：FTP密码(10字节HEX码，00表示字符串结束)；
     * String fpath ;//EE...EE：FTP路径(50字节HEX码，00表示字符串结束)；
     * String ffile ;//FF...FF：FTP文件名(50字节HEX码，00表示字符串结束)；
     * String fcode ;//GG...GG：厂家编码(10字节HEX码，00表示字符串结束)；
     * String hv ;//HH...HH：充电设备升级硬件版本号(30字节HEX码，00表示字符串结束)；
     * String sv ;//KK...KK：充电设备升级软件版本号(20字节HEX码，00表示字符串结束)。
     */
    private String upgrade;

    @Override
    public String packing() {
        return this.co + this.upgrade;
    }
    public Csdna1_15 setCo(String co) {
        this.co = FieldPack.caseToBCD(co, TypeIdentif.BYTE_CO.getByteLength());
        return this;
    }
    public Csdna1_15 setUpgrade(Map<String, String> data) {
        String order = data.get("order");
        String fip = FieldPack.ip2hex(data.get("fip"));
        String fport = FieldPack.port2hex(data.get("fport"));
        String fuser = FieldPack.username2hex(data.get("fuser"));
        String fpass = FieldPack.pass2hex(data.get("fpass"));
        String fpath = FieldPack.path2hex(data.get("fpath"));
        String ffile = FieldPack.file2hex(data.get("ffile"));
        String fcode = FieldPack.code2hex(data.get("fcode"));
        String hv = FieldPack.hv2hex(data.get("hv"));
        String sv = FieldPack.sv2hex(data.get("sv"));

        this.upgrade = order + fip  + fport + fuser + fpass + fpath + ffile + fcode + hv + sv;
        this.upgrade = FieldPack.caseToBCD(this.upgrade, TypeIdentif.BYTE_UPGRADE.getByteLength());
        return this;
    }

    @Override
    public String toString() {
        return "Csdna1_15{" +
                "co='" + co + '\'' +
                ", upgrade='" + upgrade + '\'' +
                '}';
    }
}
